package com.mall.user.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mall.user.model.dto.favorite.UserFavoriteQueryRequest;
import com.mall.user.model.entity.UserFavorite;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mall.user.model.vo.UserFavoriteVO;

import java.time.LocalDateTime;
import java.util.List;

/**
* @author 张云博
* @description 针对表【user_favorite(用户收藏表)】的数据库操作Service
* @createDate 2025-08-29 10:04:36
*/
public interface UserFavoriteService extends IService<UserFavorite> {

    /**
     * 添加收藏
     */
    Long addFavorite(Long userId, Long productId);

    /**
     * 取消收藏
     */
    boolean removeFavorite(Long userId, Long productId);

    /**
     * 检查是否已收藏
     */
    boolean isFavorite(Long userId, Long productId);

    /**
     * 获取用户收藏列表（分页）
     */
    Page<UserFavoriteVO> getUserFavorites(Long userId, int current, int pageSize);

    /**
     * 构建查询条件
     */
    QueryWrapper<UserFavorite> getQueryWrapper(UserFavoriteQueryRequest userFavoriteQueryRequest);

    /**
     * 转换为VO对象
     */
    UserFavoriteVO getUserFavoriteVO(UserFavorite userFavorite);

    /**
     * 批量转换为VO对象
     */
    List<UserFavoriteVO> getUserFavoriteVO(List<UserFavorite> userFavoriteList);

    /**
     * 获取总收藏数
     */
    Long getTotalFavoriteCount();

    /**
     * 获取今日新增收藏数
     */
    Long getTodayFavoriteCount();
}
